自然語言處理,簡單來說,是讓電腦能夠瞭解我們平常說話內容。
Dialogflow Chatbot的核心就是必須能夠處理和理解使用者的語意,更早期的chatbot,在自然語言處理技術還不發達前,常常是以hard code的方式來完成整個對話流程,開發者必須去抓取使用者句子中的關鍵字,然後使用像是正則表達式這類的方法來囊括所有的用詞可能性。有了自然語言處理技術之後,我們對所有的句子可以統一處理,然後交給機器去判斷意圖,可以更精準的和使用者互動。
如前述,若用一句話來描述intent-based chatbot,他的核心技術為NLU,主要透過判定使用的意圖,來決定要做什麼動作來回應。而flow-based 的平台著重於流程,在某個流程內接受使用者的某個關鍵字/語句,根據這些語句,來進入下一個流程,算是事先在程式寫好了對話的腳本。
Dialogflow使用到最重要的技術就是NLU,很多人會問他到底是哪一種,我的認知是他以intent based來做流程控制。Dialogflow以辨識意圖為主,再加上一些流程控制的小技巧來達到對話效果(Context,follow-up intent),需要注意的是,即使dialogflow擁有強大的語言辨識,開發者仍必須理解對話設計和流程控制的小技巧,才能不費力地設計出一個好的對話機器人。
假設我要打造一個訂票小幫手,我需要知道我的客戶可能會有哪些意圖? 意圖指的是使用者的目的,例如:我要查班次時間、我要訂票,我們必須提供一些客戶可能會說的話(training phrase) 來讓Dialogflow做訓練,這些句子就是NLU模型的輸入,而我們不需要在意NLU模型如何去辨識和處理這些句子,只需要提供句子讓Dialogflow幫我們做訓練,而意圖就是答案,所以訓練完成後,當Dialogflow接收到客戶詢問的問題,就會去判斷這些句子屬於哪一種意圖,然後給予回應。